﻿using System;
using Atendex.Dominio.Interfaces;
using Castle.ActiveRecord;
using System.Net.Mail;
using System.Configuration;
using System.IO;
using System.Reflection;

namespace Atendex.Dominio.ActiveRecord
{
    [ActiveRecord(DiscriminatorValue = "gerente")]
    [Serializable]
    public class GerenteAR : UsuarioAR, IGerente
    {

        protected GerenteAR() { }

        public GerenteAR(string nome, string email, string login, string senha)
        {

            if (string.IsNullOrEmpty(nome)) throw new DominioException("Nome do gerente não pode ser vazio.");
            if (string.IsNullOrEmpty(login)) throw new DominioException("Login do gerente não pode ser vazio.");
            if (string.IsNullOrEmpty(senha)) throw new DominioException("Senha do gerente não pode ser vazio.");
            if (string.IsNullOrEmpty(email)) throw new DominioException("Email do gerente não pode ser vazio.");

            Nome = nome;
            Login = login;
            Email = email;
            Senha = senha;
            Ativo = true;

        }




        #region IGerente Members

        public void EnviarEmail()
        {
            MailMessage message = new MailMessage(ConfigurationManager.AppSettings["EnviadorDeEmail"], this.Email);
            message.Subject = "Criação de conta";
            string mailBody = File.ReadAllText(Environment.CurrentDirectory + @"\Atendex.Dominio\EmailTemplates\CriacaoContaGerente.htm");
            mailBody = mailBody.Replace("{0}", this.Nome);
            mailBody = mailBody.Replace("{1}", this.Login);
            mailBody = mailBody.Replace("{2}", this.Senha);

            message.Body = mailBody;
            message.IsBodyHtml = true;

            SmtpClient client = new SmtpClient();
            client.EnableSsl = true;
            client.Send(message);
        }

        #endregion
    }
}
